The field of this disclosure relates generally to systems and methods of data reading, and more particularly but not exclusively to reading optical codes (e.g., bar codes).
Optical codes encode useful, optically-readable information typically about the items to which they are attached or otherwise associated. Perhaps the most common example of an optical code is the bar code. Bar codes are ubiquitously found on or associated with objects of various types, such as the packaging of retail, wholesale, and inventory goods; retail product presentation fixtures (e.g., shelves); goods undergoing manufacturing; personal or company assets; and documents. By encoding information, a bar code typically serves as an identifier of an object, whether the identification be to a class of objects (e.g., containers of milk) or a unique item. A typical linear or one-dimensional bar code, such as a UPC code, consists of alternating bars (i.e., relatively dark areas) and spaces (i.e., relatively light areas). In a UPC code, for example, the pattern of alternating bars and spaces and the widths of those bars and spaces represent a string of binary ones and zeros, wherein the width of any particular bar or space is an integer multiple of a specified minimum width, which is called a “module” or “unit.” Thus, to decode the information, a bar code reader must be able to reliably discern the pattern of bars and spaces, such as by determining the locations of edges demarking adjacent bars and spaces from one another, across the entire length of the bar code.
Linear bar codes are just one example of the many types of optical codes in use today. Higher-dimensional optical codes, such as, two-dimensional matrix codes (e.g., MaxiCode) or stacked codes (e.g., PDF 417), which are also sometimes referred to as “bar codes,” are also used for various purposes.
Different methods and types of optical code readers are available for capturing an optical code and for decoding the information represented by the optical code. For example, image-based optical code readers are available that include imagers, such as charge coupled devices (CCDs) or complementary metal oxide semiconductor (CMOS) imagers, that generate electronic image data that represent an image of a captured optical code. Image-based optical code readers are used for reading one-dimensional optical codes and higher-dimensional optical codes. Because optical codes most often include dark and light patterns (e.g., black and white) that represent binary data, imagers of image-based optical code readers are typically monochrome so that uniform sensitivity for each pixel of the imager is achieved.
Common imagers made for image capturing devices, such as still cameras and video cameras, however, are color imagers—not monochrome. Because imagers made for many image capturing devices are color, color imagers are generally made in higher volume and have become more widely available and may be less expensive than monochrome imagers. Some image-based optical code readers have included color imagers, but the inventor has recognized that these optical code readers have not effectively achieve high-speed decoding or high-resolution imaging.